package it.unipd.dei.project.iandroid;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseOpenHelper extends SQLiteOpenHelper {

	private static final String DATABASE_NAME = "iAndroid.db";
	private static final int DATABASE_VERSION = 1;
	
	private static final String CREATE_TABLE_EVENTO = // TABELLA EVENTO
	"CREATE TABLE Evento ( Nome TEXT, PeriodoIniziale TEXT, PeriodoFinale TEXT, PropriaSquadra TEXT, "
			+ "PRIMARY KEY(Nome, PeriodoIniziale, PeriodoFinale), "
			+ "FOREIGN KEY(PropriaSquadra) REFERENCES Team(Nome) ON UPDATE CASCADE);";
	
	private static final String CREATE_TABLE_PARTITA = // TABELLA PARTITA
	"CREATE TABLE Partita ( Id INTEGER PRIMARY KEY, NomeEvento TEXT, PeriodoInizialeEvento TEXT, "
			+ "PeriodoFinaleEvento TEXT, IdTeam INTEGER, FaseEvento TEXT, Avversario TEXT,"
			+ "GiocaInCasa INT, Data DATE, Ora TEXT, RisultatoFinale TEXT, PossessoPalla TEXT, "
			+ "Tiri TEXT, Punizioni TEXT, CalciDangolo TEXT, Fuorigioco TEXT, Falli TEXT, "
			+ "Ammonizioni TEXT, Espulsioni TEXT, CampoNeutro TEXT, "
			+ "FOREIGN KEY(NomeEvento, PeriodoInizialeEvento, PeriodoFinaleEvento) "
			+ "REFERENCES Evento(Nome, PeriodoIniziale, PeriodoFinale) ON UPDATE CASCADE ON DELETE CASCADE, "
			+ "FOREIGN KEY(IdTeam) REFERENCES Team(Id) ON UPDATE CASCADE ON DELETE CASCADE, "
			+ "FOREIGN KEY(Avversario) REFERENCES Team(Nome) ON UPDATE CASCADE ON DELETE CASCADE);";
	
	private static final String CREATE_TABLE_TEAM = // TABELLA TEAM
	"CREATE TABLE Team ( Id INTEGER PRIMARY KEY, Nome TEXT UNIQUE, Stadio TEXT, Citta TEXT);";
	
	private static final String CREATE_TABLE_FOTO = // TABELLA FOTO
	"CREATE TABLE Foto ( Id INTEGER PRIMARY KEY, IdPartita INTEGER, FileUri TEXT, "
			+ "FOREIGN KEY(IdPartita)			  REFERENCES Partita(Id) ON UPDATE CASCADE ON DELETE CASCADE);";

	DatabaseOpenHelper(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL(CREATE_TABLE_EVENTO);
		db.execSQL(CREATE_TABLE_PARTITA);
		db.execSQL(CREATE_TABLE_TEAM);
		db.execSQL(CREATE_TABLE_FOTO);

	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
		db.execSQL("DROP TABLE IF EXISTS Evento");
		db.execSQL("DROP TABLE IF EXISTS Partita");
		db.execSQL("DROP TABLE IF EXISTS Team");
		db.execSQL("DROP TABLE IF EXISTS Foto");
		onCreate(db);
	}

	@Override
	public void onOpen(SQLiteDatabase db) {
		super.onOpen(db);
		if (!db.isReadOnly()) {
			// Enable foreign key constraints
			db.execSQL("PRAGMA foreign_keys=ON;");
		}
	}

}